home *** CD-ROM | disk | FTP | other *** search
-
- **************************************************************************
- * CONSOLE.DEVICE *
- **************************************************************************
-
- ; < A0: event
- ; < A1: buffer
- ; < A2: keymap (ignored, NULL)
- ; < D1: buffer length
- ; > D0: keycode length
- ; > (A1): ASCII key
-
- _RawKeyConvert:
- cmp.b #IECLASS_RAWKEY,(ie_Class,A0)
- bne.b .nok ; not a key event: out!
-
- movem.l D2/A2,-(A7)
-
- move.w (ie_Code,A0),D2
- bclr #7,D2
- bne.b .kup ; key up!
-
- cmp.w #$4C,D2
- bcs.b .normal
- cmp.w #$50,D2
- bcs.b .arrows
- cmp.w #$60,D2
- bcs.b .functions
- bra.b .qualifiers ; qualifiers, out!
-
- .normal:
- lea .keytable_shifted(pc),A2
- move.w (ie_Qualifier,A0),D0
- and.b #IEQUALIFIER_LSHIFT!IEQUALIFIER_RSHIFT!IEQUALIFIER_CAPSLOCK,D0
- bne.b .shift
- lea .keytable(pc),A2
- .shift
- move.b (A2,D2.W),(A1)+
- moveq #1,D0
- bra.b .exit
- .arrows:
- lea .keytable(pc),A2
- move.b #$9B,(A1)+
- move.b (A2,D2.W),(A1)+
- moveq #2,D0
- bra.b .exit
-
- .functions:
- lea .keytable(pc),A2
- move.b #$9B,(A1)+
- move.b (A2,D2.W),(A1)+
- move.b #$7E,(A1)+
- moveq #3,D0
- bra.b .exit
- .qualifiers:
- moveq #0,D0
- .exit
- movem.l (A7)+,D2/A2
- rts
- .kup:
- moveq #0,D0
- bra.b .exit
- .nok:
- moveq #0,D0
- rts
-
- .keytable:
- dc.b '`','1','2','3','4','5','6','7','8','9','0','-','=','|','?','0'
- dc.b 'q','w','e','r','t','y','u','i','o','p','[',']','?','1','2','3'
- dc.b 'a','s','d','f','g','h','j','k','l',';',$27,'?','?','4','5','6'
- dc.b '<','z','x','c','v','b','n','m',',','.','/','?','?','7','8','9'
- dc.b ' ',$08,$09,$0A,$0A,$1B,$7F,'?','?','?','.','?'
- .arrtable:
- dc.b $41,$42,$43,$44
- .functable:
- dc.b $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,'?','?','?','?','?',$3F
- .keytable_shifted:
- dc.b '~','!','@',$22,'$','%','6','7','8','9','0','-','=','|','?','0'
- dc.b 'Q','W','E','R','T','Y','U','I','O','P','{','}','?','1','2','3'
- dc.b 'A','S','D','F','G','H','J','K','L',':',$22,'?','?','4','5','6'
- dc.b '>','Z','X','C','V','B','N','M','<','>','?','?','?','7','8','9'
- dc.b ' ',$08,$09,$0A,$0A,$1B,$7F,'?','?','?','.','?'
- even
-